<?php
 Session_Start () ;
 If (!$_SESSION ["repertoire_config"]) { Header ("Location: ../../") ; }
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../../include/module_absences.cfg") ;
 Include ("../../include/module_absences.php") ;
 Include ("../include/config.inc") ;
 Include ("../include/absences.cfg") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 $date_demande = var_courante ("date_demande", 0, Null) ;
 $publi_0 = var_courante ("publi_0", 0, Null) ;
 $type_envoi = var_courante ("type_envoi", 0, Null) ;
 
 Include ("../../include/var_temp.inc") ;
 
 Function traite_eleve ($id_eleve, $repere1, $repere2, $type_envoi)
  {
   Global $champs, $repertoire_racine, $id_sql ;

   // Recherche du publipostage si existe
   $lettre = courrier_lettre ($id_eleve, $repere1, $repere2, $type_envoi) ;
   
   // Recherche de la lettre a envoyer
   $lettre_publi = SQL_commande ("SELECT fichier,format FROM abs_modeles WHERE id_abs_modele='".$lettre [1]."' LIMIT 1", $id_sql) ;
   $lp = SQL_ligne_suivante ($lettre_publi) ;
   
   // Lecture du fichier
   $f = FOpen ($repertoire_racine.$lp [0], "r") ;
   $fiche = "" ;
   While (!FEoF ($f))
    {
     $fiche .= FGets ($f, 4096) ;
    }
   FClose ($f) ;
   /*
   $f = FOpen ($repertoire_racine.$lp [0], "r") ;
   $fiche = FRead ($f, FileSize ($repertoire_racine.$lp [0])) ;
   $ok = FClose ($f) ;
   */
   // Publiposte
   // Parcours les champs et remplace
   $validation = 0 ;
   $nombre_champs = 0 ;
   $champs_totaux = 0 ;
   For ($i = 1 ; $i <= $champs [0][0] ; $i++)
    {
     If (StrPos ($fiche, $champs [$i][0]))
      {
       $nombre_champs++ ;
       Switch ((integer)$champs [$i][1])
        {
         Case 0 : $test = "\$".$champs [$i][8] ; Eval ("\$test=\"$test\";") ;
                  $c = SQL_commande ("SELECT ".$champs [$i][4]." FROM ".$champs [$i][3]." WHERE ".$champs [$i][8]."='".$test."' LIMIT 1", $id_sql) ;
                  If (SQL_nbr_lignes ($c) == 1)
	  	   {
	  	    $l = SQL_ligne_suivante ($c) ;
		    If ($champs [$i][9] > 0)
		     {
		      If (!$champs [$i][10]) { $champs [$i][10] = " " ; }
		      $chaine = Explode ($champs [$i][10], $l [0]) ;
		      $l [0] = $chaine [$champs [$i][9]-1] ;
		     }
		    //Echo "0->".Str_Replace ("<", "< ", $champs [$i][0])."->".$l [0]."<BR>" ;
		    $fiche = Str_Replace ($champs [$i][0], $l [0], $fiche) ;
		    //If ($champs [$i][11] == 1) { $validation = 1 ; }
		    $champs_totaux++ ;
		   }
                  Else { $fiche = Str_Replace ($champs [$i][0], "", $fiche) ; }
                  Break ;
         Case 1 : $f = FOpen ("../../tmp/".Session_ID().".php", "w") ;
		  FPuts ($f, "<?php \$chaine=".$champs [$i][2]."; ?>") ;
		  $ok = FClose ($f) ;
		  Include ("../../tmp/".Session_ID().".php") ;
		  UnLink ("../../tmp/".Session_ID().".php") ;
		  //Echo "1->".Str_Replace ("<", "< ", $champs [$i][0])."->".$chaine."<BR>" ;
		  //If ($chaine != "")
		  // {
		  $fiche = Str_Replace ($champs [$i][0], $chaine, $fiche) ;
		  //If ($champs [$i][11] == 1) { $validation = 1 ; }
		  $champs_totaux++ ;
		  // }
                  //Else { $fiche = Str_Replace ($champs [$i][0], "", $fiche) ; }
                  Break ;
         Case 2 : If ($champs [$i][3] != "")
                   {
		    $test = "\$".$champs [$i][8] ; Eval ("\$test=\"$test\";") ;
                    $c = SQL_commande ("SELECT ".$champs [$i][4]." FROM ".$champs [$i][3]." WHERE ".$champs [$i][8]."='".$test."' LIMIT 1", $id_sql) ;
                    If (SQL_nbr_lignes ($c) == 1)
		     {
		      $l = SQL_ligne_suivante ($c) ;
		      $chaine = Str_Replace ("%1", "'".$l [0]."'", $champs [$i][2]) ;
		      $f = FOpen ("../../tmp/".Session_ID().".php", "w") ;
		      FPuts ($f, "<?php \$chaine=".$chaine."; ?>") ;
		      $ok = FClose ($f) ;
		      Include ("../../tmp/".Session_ID().".php") ;
		      UnLink ("../../tmp/".Session_ID().".php") ;
		      //Echo "2->".Str_Replace ("<", "< ", $champs [$i][0])."->".$chaine."<BR>" ;
		      //If ($chaine != "")
		      // {
		      $fiche = Str_Replace ($champs [$i][0], $chaine, $fiche) ;
		      //If ($champs [$i][11] == 1) { $validation = 1 ; }
		      $champs_totaux++ ;
                      // }
		      //Else { $fiche = Str_Replace ($champs [$i][0], "", $fiche) ; }
                     }
		   }
                  Else
		   {
                    // Utilisation des variables internes
		    // %1 : Date demande
		    // %2 : Id eleve
		    $c = Str_Replace ("%1", "\"".$lettre [2]."\"", $champs [$i][2]) ;
		    $chaine = Str_Replace ("%2", $id_eleve, $c) ;
		    $f = FOpen ("../../tmp/".Session_ID().".php", "w") ;
		    FPuts ($f, "<?php \$chaine=".$chaine."; ?>") ;
		    $ok = FClose ($f) ;
		    Include ("../../tmp/".Session_ID().".php") ;
		    UnLink ("../../tmp/".Session_ID().".php") ;
		    //Echo "2->".Str_Replace ("<", "< ", $champs [$i][0])."->".$chaine."<BR>" ;
		    //If ($chaine != "")
		    // {
		    $fiche = Str_Replace ($champs [$i][0], $chaine, $fiche) ;
		    //If ($champs [$i][11] == 1) { $validation = 1 ; }
		    $champs_totaux++ ;
                    // }
                    //Else { $fiche = Str_Replace ($champs [$i][0], "", $fiche) ; }
		   }
                  Break ;
         Case 3 : $test = "\$".$champs [$i][8] ; Eval ("\$test=\"$test\";") ;
                  $c = SQL_commande ("SELECT b.".$champs [$i][7]." FROM ".$champs [$i][3]." a, ".$champs [$i][5]." b WHERE a.".$champs [$i][8]."='".$test."' AND a.".$champs [$i][4]."=b.".$champs [$i][6]." LIMIT 1", $id_sql) ;
                  If (SQL_nbr_lignes ($c) == 1)
	  	   {
	  	    $l = SQL_ligne_suivante ($c) ;
		    //Echo "3->".Str_Replace ("<", "< ", $champs [$i][0])."->".$l [0]."<BR>" ;
		    $fiche = Str_Replace ($champs [$i][0], $l [0], $fiche) ;
		    //If ($champs [$i][11] == 1) { $validation = 1 ; }
		    $champs_totaux++ ;
		   }
		  Else { $fiche = Str_Replace ($champs [$i][0], "", $fiche) ; }
                  Break ;
         Case 4 : $c = SQL_commande ("SELECT valeur FROM abs_publi_champs WHERE nom='".$champs [$i][0]."' AND eleve='".$id_eleve."' AND id_abs_publipostage='".$lettre [0]."' LIMIT 1", $id_sql) ;
	          //echo "SELECT valeur FROM abs_publi_champs WHERE nom='".$champs [$i][0]."' AND eleve='".$id_eleve."' AND id_abs_publipostage='".$lettre [0]."' LIMIT 1<BR>" ;
                  If (SQL_nbr_lignes ($c) == 1)
	  	   {
	  	    $l = SQL_ligne_suivante ($c) ;
		    If ($champs [$i][2] != "")
		     {
		      // Fait passer par une fonction
		      // Utilisation des variables internes
		      // %0 : Valeur a passer
		      // %1 : Date demande
		      // %2 : Id eleve
                      $c0 = Str_Replace ("%0", "\"".$l [0]."\"", $champs [$i][2]) ;
		      $c = Str_Replace ("%1", "\"".$lettre [2]."\"", $c0) ;
		      $chaine = Str_Replace ("%2", $id_eleve, $c) ;
		      $f = FOpen ("../../tmp/".Session_ID().".php", "w") ;
		      FPuts ($f, "<?php \$chaine=".$chaine."; ?>") ;
		      $ok = FClose ($f) ;
		      Include ("../../tmp/".Session_ID().".php") ;
		      UnLink ("../../tmp/".Session_ID().".php") ;
		     }
                    Else
		     {
		      $chaine = $l [0] ;
		     }
		    //Echo "4->".Str_Replace ("<", "< ", $champs [$i][0])."->".$chaine."<BR>" ;
		    $fiche = Str_Replace ($champs [$i][0], $chaine, $fiche) ;
		    //If ($champs [$i][11] == 1) { $validation = 1 ; }
		    $champs_totaux++ ;
		   }
		  Else { $fiche = Str_Replace ($champs [$i][0], "", $fiche) ; }
                  Break ;
        }
      }
    }
   //If ($validation == 1) { Return $fiche ; } Else { Return "" ; }
   //If ($champs_totaux == $nombre_champs) { Return $fiche ; } Else { Return "" ; }
   Return $fiche ;
  }
 
 // Lecture des champs pour publipostage
 $ch = SQL_commande ("SELECT * FROM abs_champs", $id_sql) ;
 $champs [0][0] = SQL_nbr_lignes ($ch) ;
 For ($i = 1 ; $i <= $champs [0][0] ; $i++)
  {
   $c = SQL_tableau_associatif ($ch, "") ;
   $champs [$i][0] = $c ["code_champ"] ;
   $champs [$i][1] = $c ["type"] ;
   $champs [$i][2] = $c ["commande"] ;
   $champs [$i][3] = $c ["table1"] ;
   $champs [$i][4] = $c ["nom_champ1"] ;
   $champs [$i][5] = $c ["table2"] ;
   $champs [$i][6] = $c ["repere"] ;
   $champs [$i][7] = $c ["nom_champ2"] ;
   $champs [$i][8] = $c ["requete"] ;
   $champs [$i][9] = $c ["num_champs"] ;
   $champs [$i][10] = $c ["separateur"] ;
  }
 
 // Recherche du publipostage a faire
 $requete = "SELECT p.* FROM abs_publipostage p, eleves e, classes c WHERE p.eleve=e.id_eleve AND e.classe=c.id_classe AND e.exterieur='0'" ;
 If (IsSet ($date_demande)) { $requete .= " AND p.date_demande='".$date_demande."'" ; }
 //If (IsSet ($id_eleve)) { $requete .= " AND e.id_eleve='".$id_eleve."'" ; }
 If (IsSet ($publi_0) AND  ($publi_0 > 0))
  {
   If (IsSet ($type_envoi)) { $requete .= " AND p.envoi='".$type_envoi."'" ; }
   $requete .= " AND (" ;
   For ($i = 1 ; $i < $publi_0 ; $i++)
    {
     //$p = "\$publi_".$i ; Eval ("\$p=\"$p\";") ;
     $p = var_courante ("publi_".$i, 0, 0) ;
     $requete .= "p.id_abs_publipostage='".$p."' OR " ;
    }
   //$p = "\$publi_".$i ; Eval ("\$p=\"$p\";") ;
   $p = var_courante ("publi_".$i, 0, 0) ;
   $requete .= "p.id_abs_publipostage='".$p."')" ;
  }
 Else
  {
   If (!IsSet ($type_envoi)) { $type_envoi = 0 ; }
   $requete .= " AND p.envoi='".$type_envoi."'" ;
  }
 $requete .= " ORDER BY c.nom,c.nom_bref,e.nom,e.prenoms" ;
 $resultats = SQL_commande ($requete, $id_sql) ;
 $nombre = SQL_nbr_lignes ($resultats) ;
 $publipostage [0] = 0 ;
 If ($nombre > 1)
  {
   $fichier_tempo = "" ;
   $ok = 0 ;
   For ($i = 1 ; $i <= $nombre ; $i++)
    {
     $p = SQL_tableau_associatif ($resultats, "") ;
     // Est-ce sous quarantaine ?
     If (courrier_quarantaine ($p ["eleve"], $p ["repere1"], $p ["repere2"]) == 0)
      {
       // Non
       $tempo = traite_eleve ($p ["eleve"], $p ["repere1"], $p ["repere2"], $type_envoi) ;
       If ($tempo != "")
        {
         If ($ok == 1) { $fichier_tempo .= "\n" ; }
         $fichier_tempo .= SubStr ($tempo, 1, StrLen ($tempo)-2) ;
         $ok = 1 ;
	 $publipostage [0]++ ;
	 $publipostage [$publipostage [0]] = $p ["id_abs_publipostage"] ;
	}
      }
    }
   If ($fichier_tempo != "") { $fichier .= "{".$fichier_tempo."}" ; } Else { $fichier = "" ; }
  }
 Else
  {
   $p = SQL_tableau_associatif ($resultats, "") ;
   $fichier = traite_eleve ($p ["eleve"], $p ["repere1"], $p ["repere2"], $type_envoi) ;
   $publipostage [0]++ ;
   $publipostage [$publipostage [0]] = $p ["id_abs_publipostage"] ;
  }

 // Envoi du fichier
 If ($fichier != "")
  {
   // Fichier existant donc envoi
   Header ("Content-type: application/msword") ;
   Header ("Content-disposition: inline; filename=publipostage.rtf") ;
   Echo $fichier ;
   $requete = "UPDATE abs_publipostage SET envoi='1',date_envoi='".Date ("Y-m-d")."' WHERE " ;
   For ($i = 1 ; $i <= $publipostage [0] ; $i++)
    {
     $requete .= "id_abs_publipostage='".$publipostage [$i]."'" ;
     If ($i < $publipostage [0]) { $requete .= " OR " ; }
    }
   $ok = SQL_commande ($requete, $id_sql) ;
  }
 Else
  {
   // Pas de fichier de publipostage
   $resultats = SQL_commande ("SELECT * FROM menus WHERE numero='".$droit_courant."' AND ordre='0'", $id_sql) ;
   $l = SQL_tableau_associatif ($resultats, "") ; 
   
   Echo "<html>" ;
   Echo "<head>" ;
   entete_html ("Garennes - Module absences - Impression (publipostage)", "", 1) ;
   Echo styles ("none", "none", "none", $l ["lien"], "none") ;
   Echo "</head>" ;
  
   Echo "<body background=\"../images/fond.png\" text=\"#000000\">" ;
   Echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" ;
   Echo "<tr>" ;
   Echo "<td></td>" ;
   Echo "<td width=\"100%\" align=\"center\">Publipostage</td>" ;
   Echo "<td><a onclick=\"javascript:window.close()\" border=\"0\"><img src=\"../../images/quitter.png\" border=\"0\"></a></td>" ;
   Echo "</tr>" ;
   Echo "</table>" ;
   
   Echo "<br><center>Aucun publipostage n'a &eacute;t&eacute; possible.</center>" ;
  
   Echo "</body>" ;
   Echo "</html>" ;
  }
?>